const obj = {
    a: 1,
    b: 'hello world',
    c: {
        msg: 'hi',
    },
    d: [1, 2],
    e: [
        {
            a: 1,
            b: 2,
        },
        'abc',
        123,
    ],
};

function deepClone (x) {
    const res = new x.constructor();
    for (const key in x) {
        // 当前项的值
        const value = x[key];
        // 判断是否是对象或者数组
        if (value instanceof Object) {
            res[key] = deepClone(value);
        } else { // 基础数据类型
            res[key] = value;
        }
    }
    return res;
}

const newObj = deepClone(obj);
newObj.c.msg = 'hi siri';
console.log(newObj.c.msg); // 'hi siri'
console.log(obj.c.msg); // 'hi'

// const arr = [];
// console.log(arr.constructor); // Array
// const obj = {};
// console.log(obj.constructor); // Object

// console.log(deepClone([1, 2, 3]));

